// 项目状态枚举
export enum ProjectStatus {
  PLANNING = 0,    // 规划中
  IN_PROGRESS = 1, // 进行中
  SUSPENDED = 2,   // 暂停中
  OVERDUE = 3,     // 已逾期
  COMPLETED = 4,   // 已完成
  ABANDONED = 5    // 已废弃
}

// 项目状态配置
export const PROJECT_STATUS_CONFIG = {
  [ProjectStatus.PLANNING]: {
    value: ProjectStatus.PLANNING,
    label: '规划中',
    color: 'var(--color-text-3)'
  },
  [ProjectStatus.IN_PROGRESS]: {
    value: ProjectStatus.IN_PROGRESS,
    label: '进行中',
    color: 'rgb(var(--primary-6))'
  },
  [ProjectStatus.SUSPENDED]: {
    value: ProjectStatus.SUSPENDED,
    label: '暂停中',
    color: 'rgb(var(--warning-6))'
  },
  [ProjectStatus.OVERDUE]: {
    value: ProjectStatus.OVERDUE,
    label: '已逾期',
    color: 'rgb(var(--danger-6))'
  },
  [ProjectStatus.COMPLETED]: {
    value: ProjectStatus.COMPLETED,
    label: '已完成',
    color: 'rgb(var(--success-6))'
  },
  [ProjectStatus.ABANDONED]: {
    value: ProjectStatus.ABANDONED,
    label: '已废弃',
    color: 'rgb(var(--gray-6))'
  }
}

// 获取状态列表
export const getProjectStatusList = (currentStatus?: number, endTime?: string, progress?: number) => {
  // 如果当前是已逾期状态，需要特殊处理
  if (currentStatus === ProjectStatus.OVERDUE) {
    // 检查是否可以切换状态
    const canChangeStatus = () => {
      if (!endTime) return false
      const now = new Date()
      const endDate = new Date(endTime)
      // 如果当前时间小于截止时间，或者项目进度为100%，则可以切换状态
      return now < endDate || progress === 100
    }

    // 如果不能切换状态，返回空数组表示不显示任何选项
    if (!canChangeStatus()) {
      return []
    }
  }

  // 返回除了"已逾期"之外的所有状态
  return Object.values(PROJECT_STATUS_CONFIG).filter(
    status => status.value !== ProjectStatus.OVERDUE
  )
}
